package string;

/**
 * StringBuilder是修改字符串的工具类
 * 内部维护一个可变的char数组,并且提供了修改字符串内容的相关操作,常见的:增删改插
 */
public class StringBuilderDemo1 {
    public static void main(String[] args) {
        String str = "好好学习java";

        //无参构造器创建时,内部默认表示一个空字符串
//        StringBuilder builder = new StringBuilder();

        //内部默认表示str的内容
//        StringBuilder builder = new StringBuilder(str);
        StringBuffer builder = new StringBuffer(str);
        /*
            StringBuilder append(XXX xxx)
            将给定内容追加到字符串末尾,相当于原String中的"+"操作
         */
//        builder.append(",为了找个好工作");
//
//        //获取StringBuilder内部表示的字符串内容
//        String line = builder.toString();
//        System.out.println(line);
//
//        /*
//            好好学习java,为了找个好工作
//                       V
//            好好学习java,就是为了改变世界
//
//            StringBuilder replace(int start,int end,String str)
//            将当前字符串从下标start处到end处的内容替换为str指定的内容
//            注意:下标含头不含尾
//         */
//        builder.replace(9,16,"就是为了改变世界");
//        System.out.println(builder);
//
//        /*
//            好好学习java,就是为了改变世界
//                        V
//            ,就是为了改变世界
//
//            StringBuilder delete(int start,int end)
//            删除当前字符串指定范围内的内容
//         */
//        builder.delete(0,8);
//        System.out.println(builder);
//
//        /*
//            ,就是为了改变世界
//                    V
//            活着,就是为了改变世界
//
//            StringBuilder insert(int index,XXX xx)
//            将给定内容插入到指定位置
//         */
//        builder.insert(0,"活着");
//        System.out.println(builder);
//
//        //反转字符串
//        builder.reverse();
//        System.out.println(builder);

        /*
            增删改插等方法返回值为this,就是当前StringBuilder自身,这样做的好处在于当我们连续
            对字符串内容进行操作时,可以连续调用这些方法进行操作.
         */
        builder.append(",为了找个好工作")
                .replace(9,16,"就是为了改变世界")
                .delete(0,8)
                .insert(0,"活着");
        System.out.println(builder);
    }
}




